package com.pig4cloud.pigx.strategy.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * StrategyPositionContractEnum
 *
 * @since 2022/8/15 16:19
 */
public enum StrategyPositionContractEnum {
    ;

    /**
     * 方向（0做多、1做空）
     */
    @Getter
    @AllArgsConstructor
    public enum Side {
        /**
         * 0 做多
         */
        LONG("做多", "0"),
        /**
         * 1 做空
         */
        SHORT("做空", "1");

        private final String name;
        private final String value;

        /**
         * 根据name查找对应value
         *
         * @param name 枚举名称
         * @return java.lang.String
         * @author gong_da_kai
         * @since 2021/11/14
         */
        public static String findValue(String name) {
            for (Side item : values()) {
                if (item.getName().equals(name)) {
                    return item.getValue();
                }
            }

            return null;
        }

        /**
         * 根据value查找对应的name
         *
         * @param value 枚举值
         * @return java.lang.String
         * @author gong_da_kai
         * @since 2021/11/14
         */
        public static String findName(String value) {
            for (Side item : values()) {
                if (item.getValue().equals(value)) {
                    return item.getName();
                }
            }

            return null;
        }
    }

    /**
     * 状态（0无持仓、1持仓中、2已平仓、3加仓中、4平仓中、5异常已结算）
     */
    @Getter
    @AllArgsConstructor
    public enum Status {
        /**
         * 0 无持仓
         */
        EMPTY("无持仓", "0"),
        /**
         * 1 持仓中
         */
        HOLDING("持仓中", "1"),
        /**
         * 2 已平仓
         */
        CLOSE("已平仓", "2"),
        /**
         * 3 加仓中
         */
        ADDING("加仓中", "3"),
        /**
         * 4 平仓中
         */
        CLOSING("平仓中", "4"),
        /**
         * 5 异常已结算
         */
        ERROR_SETTLEMENT("异常已结算", "5");

        private final String name;
        private final String value;

        /**
         * 根据name查找对应value
         *
         * @param name 枚举名称
         * @return java.lang.String
         * @author gong_da_kai
         * @since 2021/11/14
         */
        public static String findValue(String name) {
            for (Status item : values()) {
                if (item.getName().equals(name)) {
                    return item.getValue();
                }
            }

            return null;
        }

        /**
         * 根据value查找对应的name
         *
         * @param value 枚举值
         * @return java.lang.String
         * @author gong_da_kai
         * @since 2021/11/14
         */
        public static String findName(String value) {
            for (Status item : values()) {
                if (item.getValue().equals(value)) {
                    return item.getName();
                }
            }

            return null;
        }
    }

}
